package swing;

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.sql.SQLException;
import java.util.List;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;

import modele.Theme;
import dao.ThemeDAO;

public class ThemeFenetre {

	private JTextField texteId;
	private JTextField texteLibelle;
	ThemeDAO base;

	public ThemeFenetre() throws SQLException {

		base = new ThemeDAO();
		
		JFrame fentreEtatInscription = new JFrame();
		fentreEtatInscription.setTitle("THEME");
		GridLayout disposeurEtatInscription = new GridLayout(5, 2);
		fentreEtatInscription.setLayout(disposeurEtatInscription);

		JLabel JLabelId = new JLabel("ID :");
		fentreEtatInscription.add(JLabelId);
		texteId = new JTextField();
		fentreEtatInscription.add(texteId);

		JLabel JLabelLibelle = new JLabel("LIBELLE :");
		fentreEtatInscription.add(JLabelLibelle);
		texteLibelle = new JTextField();
		fentreEtatInscription.add(texteLibelle);

		JButton boutonCreer = new JButton("CREER");
		fentreEtatInscription.add(boutonCreer);
		EcouteurInserer EcouteurCreer = new EcouteurInserer();
		boutonCreer.addActionListener(EcouteurCreer);
		

		JButton boutonLire = new JButton("LIRE");
		fentreEtatInscription.add(boutonLire);
		EcouteurLireParId EcouteurChercheParNom = new EcouteurLireParId();
		boutonLire.addActionListener(EcouteurChercheParNom);
		

		JButton boutonModifier = new JButton("MODIFIER");
		fentreEtatInscription.add(boutonModifier);
		EcouteurModifier EcouteurModifier = new EcouteurModifier();
		boutonModifier.addActionListener(EcouteurModifier);
		
		
		JButton boutonEfface = new JButton("EFFACE");
		fentreEtatInscription.add(boutonEfface);
		EcouteurEffacerParId EcouteurEffacerParNom = new EcouteurEffacerParId();
		boutonEfface.addActionListener(EcouteurEffacerParNom);
		

		JButton boutonCherche = new JButton("LISTE");
		fentreEtatInscription.add(boutonCherche);
		EcouteurListerTheme EcouteurChercheTout = new EcouteurListerTheme();
		boutonCherche.addActionListener(EcouteurChercheTout);
		

		fentreEtatInscription.setSize(450, 150);
		fentreEtatInscription.setVisible(true);
		fentreEtatInscription.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		fentreEtatInscription.setLocationRelativeTo(null);
		fentreEtatInscription.setResizable(false);

	}
	
	class EcouteurInserer implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent ev) {

			String libelle = texteLibelle.getText();

			Theme t = new Theme(libelle);
			System.out.println(t);

			try {
				base.inserer(t);
			} catch (SQLException e) {

				e.printStackTrace();
			}
		}
	}
	
	class EcouteurLireParId implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent ev) {

			int id = Integer.parseInt(texteId.getText());
			Theme t;
			try {
				t = base.lireParId(id);

				if (t != null) {
					texteLibelle.setText(t.getLibelle());

				} else {
					System.out.println("L'ID " + id + " n'existe pas.");
				}
			} catch (SQLException e) {

				e.printStackTrace();
			}
		}
	}
	
	class EcouteurModifier implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent ev) {

			int id = Integer.parseInt(texteId.getText());
			String libelle = texteLibelle.getText();
			
			Theme t = new Theme(id, libelle);
			System.out.println(t);
			try {
				base.modifier(t);
			} catch (SQLException e) {

				e.printStackTrace();
			}
			System.out.println("La personne a été modifiée.");
		}
	}

	class EcouteurEffacerParId implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent ev) {
			int efface = Integer.parseInt(texteId.getText());
			try {
				base.supprimer(efface);
			} catch (SQLException e) {

				e.printStackTrace();
			}
			System.out.println("L'utilisateur dont l'ID est " + efface
					+ " a été éffacée.");
		}
	}

	class EcouteurListerTheme implements ActionListener {

		@Override
		public void actionPerformed(ActionEvent ev) {

			List<Theme> tableauTheme = null;
			try {
				tableauTheme = base.lister();
			} catch (SQLException e) {

				e.printStackTrace();
			}
			for (Theme t : tableauTheme)
				System.out.println(t);
		}
	}
	
	public static void main(String[] args) throws SQLException {
		
		ThemeFenetre test = new ThemeFenetre();
	}
}
